﻿/******************************************* 
	categories 0.2
*******************************************/

function blogCategories(element, ajaxUrl, deleteIconUrl, emptyData, emptyList) {
	window._blogCategories = this;
	
	this.container = element;

	this.newEmpty = emptyData || '<div class="emptyData"><p>Нет ни одной рубрики.</p></div>';
	this.newUl = emptyList || '<ul class="checkboxes"></ul>';
	this.list = false;
	this.url = ajaxUrl;
	this.iconUrl = deleteIconUrl;
		
	this.init = function () {
		this.input = $("#cat");
		this.container = $("div#cats");
		this.ul = this.container.find("ul");
		this.empty = this.container.find("div.emptyData");
		
		this.list = ( this.ul.length > 0 );
		
		$("#cat").keypress( function (e) {
			var e = e || window.event;
			var code = e.keyCode || e.which;
			if (code == 13) { _blogCategories.addItem(this.value); this.value = ""; return false; }
		});
		
		$("#catAddSave").click( function () {
			_blogCategories.addItem(_blogCategories.input.val());
			_blogCategories.input[0].value = '';
			return false;
		});
		
		this.container.find("ul li a.linkDelete").click( _blogCategories.deleteLinkClick );
	};
	
	this.deleteLinkClick = function () {
		$.ajax({
			type : "GET",
			url : _blogCategories.url,
			dataType : "json",
			data : {
				a : "ubcd",
				cid : this.id.replace("cl","")
			},
			success : function (data) {				
				if ( typeof(data.error) != "undefined" ) {
					boxerError(data.error);
					return false;
				};
				
				if (typeof(data.cid) == "undefined") { 
					boxerError("Ошибка! Попробуйте еще раз.");
					return false;
				}
				
				if (_blogCategories.ul.find("li").length > 1) { 
					$("#cl" + data.cid).parent().slideUp(300, function () {
						$(this).remove();
					});
				} else { 
					$("#cl" + data.cid).parent().remove();
					_blogCategories.empty = _blogCategories.container.html(_blogCategories.newEmpty).find("div.emptyData");
					_blogCategories.list = false;					
				};
							
				boxerAlert("Рубрика удалена");
			},
			error : function () {
				boxerError("Ошибка! Попробуйте еще раз.");
				return false;				
			}
		});	
						
		return false;		
	};
	
	this.addItem = function(title) {
		if (title == "") { return false; }
		$.ajax({
			type : "GET",
			url : _blogCategories.url,
			dataType : "json",
			data : {
				a : "ubci",
				cn : title
			},
			success : function (data) {
				if ( typeof(data.error) != "undefined" ) {
					boxerError(data.error);
					return false;
				};
				
				if ( (typeof(data.cid) == "undefined") || (typeof(data.cn) == "undefined")) { 
					boxerError("Ошибка! Попробуйте еще раз.");
					return false;
				}
				
				if (_blogCategories.list != true) { 
					_blogCategories.ul = _blogCategories.container.html(_blogCategories.newUl).find("ul");
					_blogCategories.list = true;
				};
				
				_blogCategories.ul.append('<li>\
											<input id="cat' + data.cid + '" type="checkbox" value="' + data.cid + '" name="cat"/>\
											<label for="cat' + data.cid + '">' + data.cn + '</label>\
											<a id="cl' + data.cid + '" class="linkDelete" title="Удалить эту рубрику" href="#">\
												<img src="' + _blogCategories.iconUrl + '"/>\
											</a>\
										   </li>').find("a.linkDelete").click( _blogCategories.deleteLinkClick );
										   
				boxerAlert("Новая рубрика добавлена");										   
			},
			error : function () {
				boxerError("Ошибка! Попробуйте еще раз.");
				return false;				
			}
		});
	};
	
	this.init();
}

$.fn.imCategories = function(ajaxUrl, deleteIconUrl, emptyData, emptyList) {
	return this.each( function () {
		window._blogCategories = new blogCategories(this, ajaxUrl, deleteIconUrl, emptyData, emptyList);
	});
};